package Practice.classpractice;

import java.util.Scanner;

//LeetCode力扣：387：字符串中的第一个唯一字符

//思路：
/*
1.遍历原来的字符串，定义一个计数数组，默认初始化为0
2.把对应字符放到对应的计数数组的下标的位置进行++
3.这个时候我们再把原来字符串进行遍历，看看没每个字符次数在计数数组中出现的次数，判断如果次数为1，就返回对应的字符的下标
 */

//这道题，我们用了哈希的思想，带到后我们学习哈希的时候，会再来做这道题
public class Test {
    public static int firstUnIqChar(String s) {
        int[] array = new int[26];//计数数组
        //此时候默认都是0；
        for (int i = 0; i < s.length(); i++) {
            char ch = s.charAt(i);//通过char方法来获取指定下标位置的字符，用字符减去小写的a，
            //从而节省了空间的利用效率
            array[ch - 'a']++;
        }

        for (int i = 0; i < s.length(); i++) {
            char ch = s.charAt(i);
            if (array[ch - 'a']== 1){
                return i;
            }
        }
        return -1;
    }
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String s = scanner.nextLine();
        int index = firstUnIqChar(s);
        System.out.println(index);

    }
}
